package com.gsbelarus.gedemin.salary.receiver;

import android.content.Intent;
import android.preference.PreferenceManager;

import com.gsbelarus.gedemin.lib.sync.protocol.AlarmReceiver;
import com.gsbelarus.gedemin.lib.sync.protocol.SyncServiceModel;
import com.gsbelarus.gedemin.lib.sync.protocol.entity.SyncServiceTask;
import com.gsbelarus.gedemin.salary.entity.SyncRequestType;
import com.gsbelarus.gedemin.salary.fragment.SettingsFragment;
import com.gsbelarus.gedemin.salary.service.SyncService;

import java.util.Calendar;

public class AutoSyncReceiver extends AlarmReceiver {

    /**
     * Обычно вызывается после вызова метода {@link #startSync()}.
     * Может быть вызван без вызова метода {@link #startSync()}.
     * Внутри метода можно вызвать {@link #setIntervalUpdateInMinutes(int)}
     *
     * @param oldDate последняя дата на которой была синхронизация
     * @return дата седующей синхронизации
     */
    @Override
    public Calendar getNextSyncDate(Calendar oldDate) {
        oldDate.add(Calendar.DATE, 1);
        return oldDate;
    }

    /**
     * Внутри следуе начать синхронизацию
     * Вызывается перед вызовом метода {@link #getNextSyncDate(Calendar)}
     */
    @Override
    public void startSync() {
        getContext().startService(SyncServiceModel.getIntentWithTask(new Intent(getContext(), SyncService.class),
                SyncServiceTask.TypeOfTask.SERIES_SYNC,
                new SyncRequestType(SyncRequestType.TypeOfRequest.DATA_REQUEST),
                true));
    }

    /**
     * @return в демо режиме автосинхронизация не будет срабатывать
     */
    @Override
    public boolean isWorkMode() {
        return PreferenceManager.getDefaultSharedPreferences(getContext()).getBoolean(SettingsFragment.WORK_MODE, false);
    }
}
